package folexpr.compiler;

import folexpr.parser.FOLParserConstants;

public interface CompilerConstants {
	
	///////////// NOMI ID DELLE OPERAZIONI ///////////////////
	
	public static final String DUMP_LINES = "dumpLines";
	
	public static final String START = "START";
	
	public static final String CLOSE = "closeExpr";
	public static final String IMPL_RED = "implicReduce";
	public static final String NEG_RED = "negReduce";
	public static final String VAR_REN = "varRename";
	public static final String QUANT_AHEAD = "quantAhead";
	public static final String PRENEX_CONG = "prenexCong";
	public static final String SKOLEM = "skolemize";
	public static final String REMOVE_FORALL = "removeForAll";
	public static final String REMOVE_BRACKET = "removeBracket";

	public static final String END = "END";
	
	///////////////// LOG E DEBUG //////////////////////////////
		
	public static final boolean LOG_CLOSE_VISITOR = true;
	public static final boolean LOG_IMPL_RED_VISITOR = false;
	public static final boolean LOG_NEG_RED_VISITOR = false;
	public static final boolean LOG_VAR_REN_VISITOR = false;
	public static final boolean LOG_QUANT_AHEAD_VISITOR = false;
	public static final boolean LOG_PRENEX_CONG_VISITOR = false;
	public static final boolean LOG_SKOLEM_VISITOR = true;
	public static final boolean LOG_REMOVE_FORALL_VISITOR = false;
	public static final boolean LOG_REMOVE_BRACKET_VISITOR = false;
	
	public static final boolean LOG_PARSER = false;
	public static final boolean LOG_SYNTAXTREE_RECONVERSION_AFTER_VISIT = false;
	public static final boolean LOG_NESTED_VISIT_INVOCATIONS = true;
	
	
	////////////////////////////////////////////////////////////////////
	
	// variabili in cui inserisco l'immagine in formato stringa di alcuni token.
	// mi serve per avere indipendenza dalla rappresentazione di alcuni token nella gramm.
	// attuale dato che durante le trasformazioni ho bisogno di rigenerare alcune parti di espressione
	
	public static final String implicOpImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.IMPLIC])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.IMPLIC]).length()-1);	
	
	public static final String equivOpImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.EQUIV])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.EQUIV]).length()-1);	
	
	public static final String orImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.OR])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.OR]).length()-1);	
	
	public static final String andImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.AND])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.AND]).length()-1);	
	
	public static final String existsImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.ESISTE])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.ESISTE]).length()-1);	
	
	public static final String forallImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.PEROGNI])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.PEROGNI]).length()-1);	
	
	public static final String notImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants.NOT])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants.NOT]).length()-1);	
	
	public static final String _openImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants._OPEN])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants._OPEN]).length()-1);	
	
	public static final String _closeImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants._CLOSE])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants._CLOSE]).length()-1);	
	
	public static final String _colonImage = 
		(FOLParserConstants.tokenImage[FOLParserConstants._COLON])
			.substring(1, (FOLParserConstants.tokenImage[FOLParserConstants._COLON]).length()-1);	

	
	
}
